Memahami File Move.toml dan Move.lock
Sekarang kamu sudah tahu cara membuat paket Move menggunakan Move-Sui. Pada pelajaran ini, kita akan membahas komponen penting dalam sebuah paket Move secara mendalam: bagaimana file Move.toml dan Move.lock bekerja serta kegunaannya.
File Move.toml
Ketika kamu membuat paket Move dengan perintah sui move new, otomatis dibuatkan file Move.toml. Secara default isinya sederhana, namun seiring berkembangnya proyek kamu akan perlu menyesuaikannya. Karena itu kita perlu benar-benar memahami strukturnya.
Biasanya Move.toml memiliki tiga bagian utama:
[package]: Berisi nama dan versi paket Move (metadata).[dependencies]: Daftar paket lain yang menjadi dependensi (misal Sui framework).[addresses]: Kumpulan alamat bernama (alias) untuk dipakai di kode smart contract.
Mari kita kupas lebih lanjut dengan contoh.
Bagian [package]
Bagian [package] memiliki tiga field penting:
name: Nama paket yang kamu tentukan saat menjalankansui move new, contoh:sui move new hello_world.version: Versi paket. Secara default diberi0.0.1oleh compiler saat pembuatan.published-at: Tidak ada secara default. Field ini diisi setelah paket dipublish untuk menunjukkan alamat on-chain tempat paket berada. Misal Sui framework dipublish pada alamat0x2maka nilainya"0x2".
Contoh tampilan default bagian [package]:
[package]
name = "hello_world"
version = "0.0.1"
Berikut contoh setelah menambahkan field published-at (alamat bisa berbeda tergantung hasil deployment):
[package]
name = "hello_world"
version = "0.0.1"
published-at = "0x0"
Bagian [dependencies]
Secara default compiler menambahkan Sui Framework sebagai dependensi melalui GitHub URL. Contohnya:
[dependencies]
Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/testnet" }
Kamu juga bisa menambahkan paket lokal, misalnya:
Sui = { local = "../crates/sui-framework" }
Bagian [addresses]
Secara default compiler menambahkan dua alamat: alamat paketmu dan alamat framework Sui (0x2). Contoh:
[addresses]
hello_world = "0x0"
sui = "0x2"
Alias (seperti sui) memudahkan kita mengimpor modul, contoh:
use sui::transfer
Tanpa alias kita harus menulis alamat mentah yang lebih sulit dibaca.
File Move.lock
Saat kamu melakukan build (sui move build), compiler membuat file Move.lock di root paket. File ini mencatat metadata final beserta resolusi dependensi. Tujuannya: memastikan build reproducible dan memverifikasi integritas kode yang diimpor.
Berbeda dengan Move.toml yang bisa diedit, Move.lock tidak untuk dimodifikasi manual atau dipindahkan. Compiler menggunakannya untuk memastikan semua bagian sesuai saat eksekusi.
Contoh isi Move.lock untuk modul hello_world:
# @generated by Move, please check in and do not edit manually.
[move]
version = 0
manifest_digest = "1EA2B7F6C986E247256A7F281C4A866CE325DE9724C9D8BCBE2B0BA4CB7E18C5"
deps_digest = "F8BBB0CCB2491CA29A3DF03D6F92277A4F3574266507ACD77214D37ECA3F3082"
dependencies = [
{ name = "Sui" },
]
[[move.package]]
name = "MoveStdlib"
source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/move-stdlib" }
[[move.package]]
name = "Sui"
source = { git = "https://github.com/MystenLabs/sui.git", rev = "framework/testnet", subdir = "crates/sui-framework/packages/sui-framework" }
dependencies = [
{ name = "MoveStdlib" },
]
Penutup
File Move.toml dan Move.lock adalah fondasi manajemen paket di Move. Memahami keduanya memudahkan kamu mengelola versi, dependensi, dan publikasi. Selanjutnya kita akan mempelajari bagaimana smart contract (modul) dideklarasikan di Move-Sui dan penggunaan keyword module serta use.